package com.cip.client;

import com.cip.client.dataSource.alumno.DatosComunicacionAlumnoDS;
import com.cip.client.dataSource.alumno.DatosLocalizacionAlumnoDS;
import com.cip.client.dataSource.entidad.DatosComunicacionEntidadDS;
import com.cip.client.dataSource.entidad.DatosLocalizacionEntidadDS;
import com.cip.client.dataSource.entidad.EntidadDS;
import com.cip.client.dataSource.entidad.LlamadaDS;
import com.cip.client.dataSource.entidad.ObservacionesEntidadDS;
import com.cip.client.dataSource.entidad.ProductoDemandadoDS;
import com.cip.client.dataSource.entidad.ProductoOfertadoDS;
import com.cip.client.dataSource.entidad.VisitaDS;
import com.cip.client.i18n.GridConstants;
import com.cip.client.tablas.TablaSimple;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.types.Side;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.RecordClickEvent;
import com.smartgwt.client.widgets.grid.events.RecordClickHandler;
import com.smartgwt.client.widgets.layout.VLayout;
import com.smartgwt.client.widgets.tab.Tab;
import com.smartgwt.client.widgets.tab.TabSet;

public class TabEntidad extends VLayout {
	TablaSimple entidadTs;

	TablaSimple llamadasTs;
	TablaSimple productosDemandadosTs;
	TablaSimple productosOfertadosTs;
	TablaSimple visitasTs;
	TablaSimple observacionesTs;
	FormSimple datosComunicacionForm;
	FormSimple datosLocalizacionForm;

	TabSet tabSetSecundario;
	TabSet tabSetTerciario;

	private static TabEntidad instance = null;

	public static TabEntidad getInstance() {
		if (instance == null) {
			instance = new TabEntidad();
		}
		return instance;
	}

	private void rellenaAcciones() {
		entidadTs.tabla.addRecordClickHandler(new RecordClickHandler() {
			public void onRecordClick(RecordClickEvent event) {
				GridConstants c = GWT.create(GridConstants.class);
				
				ListGridRecord record = (ListGridRecord) event.getRecord();
				if(record==null) return;
				// SC.say("Double-clicked country: <b>"+
				// record.getAttributeAsString("id") + "</b>");
				// idSel = record.getAttributeAsString("id");
				// ObservacionesDS tds = new
				// ObservacionesDS(record.getAttributeAsString("id"),record.getAttributeAsString("id"));

				tabSetSecundario.setVisible(true);
				
				String tituloTabla = " "+record.getAttributeAsString("nombre") +" ("+ record.getAttributeAsString("cif")+")";
								
				ObservacionesEntidadDS obsDs = ObservacionesEntidadDS.getInstance(record.getAttributeAsString("id"), "obsenti");
				observacionesTs.tabla.setDataSource(obsDs);
				observacionesTs.tabla.fetchData();
				observacionesTs.getSection(0).setTitle(c.observacion_titulo() + tituloTabla);

				LlamadaDS llamaDs = LlamadaDS.getInstance(record.getAttributeAsString("id"), "llama");
				llamadasTs.tabla.setDataSource(llamaDs);
				llamadasTs.tabla.fetchData();
				llamadasTs.getSection(0).setTitle(c.llamada_titulo() + tituloTabla);

				VisitaDS visiDs = VisitaDS.getInstance(record.getAttributeAsString("id"), "visi");
				visitasTs.tabla.setDataSource(visiDs);
				visitasTs.tabla.fetchData();
				visitasTs.getSection(0).setTitle(c.visita_titulo() + tituloTabla);

				DatosComunicacionEntidadDS datCom = DatosComunicacionEntidadDS.getInstance(record.getAttributeAsString("id"), "datComEnti");
				datosComunicacionForm.form.setDataSource(datCom);
				datosComunicacionForm.form.fetchData();
				datosComunicacionForm.getSection(0).setTitle(c.datosComunicacion_titulo() + tituloTabla);
				
				DatosLocalizacionEntidadDS datLoc = DatosLocalizacionEntidadDS.getInstance(record.getAttributeAsString("id"), "datLocEnti");
				datosLocalizacionForm.form.setDataSource(datLoc);
				datosLocalizacionForm.form.fetchData();
				datosLocalizacionForm.getSection(0).setTitle(c.datosLocalizacion_titulo() + tituloTabla);

			}
		});
		
		visitasTs.tabla.addRecordClickHandler(new RecordClickHandler() {
			
			public void onRecordClick(RecordClickEvent event) {
				GridConstants c = GWT.create(GridConstants.class);
				
				ListGridRecord record = (ListGridRecord) event.getRecord();
				if(record==null) return;
				
				tabSetTerciario.setVisible(true);
				
				String tituloTabla = " ";
				
				ProductoDemandadoDS prodDemDs = ProductoDemandadoDS.getInstance(record.getAttributeAsString("id"), "prodDeman");
				productosDemandadosTs.tabla.setDataSource(prodDemDs);
				productosDemandadosTs.tabla.fetchData();
				productosDemandadosTs.getSection(0).setTitle(c.productoDemandado_titulo() + tituloTabla);

				ProductoOfertadoDS prodOferDs = ProductoOfertadoDS.getInstance(record.getAttributeAsString("id"), "prodOfer");
				productosOfertadosTs.tabla.setDataSource(prodOferDs);
				productosOfertadosTs.tabla.fetchData();
				productosOfertadosTs.getSection(0).setTitle(c.productoOfertado_titulo() + tituloTabla);
	
			}
		});
		
	}

	public TabEntidad() {
		GridConstants c = GWT.create(GridConstants.class);
		
		this.setTitle("Lista de alumnos");

		entidadTs = new TablaSimple(new EntidadDS(null, "entidades"));
		entidadTs.setTitle(c.entidad_titulo());

		tabSetSecundario = new TabSet();
		tabSetSecundario.setVisible(false);
		tabSetSecundario.setTabBarPosition(Side.TOP);
		// tabSetSecundario.setWidth("800");
		tabSetSecundario.setMargin(new Integer(10));
		tabSetSecundario.setHeight100();
		// tabSetSecundario.setBorder("2px solid green");

		Tab tabObservaciones = new Tab("Observaciones");
		tabObservaciones.setPane(observacionesTs = new TablaSimple(null));

		Tab tabDatosComunicacion = new Tab("Datos de comunicacion");
		tabDatosComunicacion.setPane(datosComunicacionForm = new FormSimple(null));

		Tab tabDatosLocalizacion = new Tab("Datos de localizacion");
		tabDatosLocalizacion.setPane(datosLocalizacionForm = new FormSimple(null));

		Tab tabLlamadas = new Tab("Llamadas comerciales");
		tabLlamadas.setPane(llamadasTs = new TablaSimple(null));

		Tab tabVisitas = new Tab("Visitas comerciales");
		tabVisitas.setPane(rellenaVisita());

		tabSetSecundario.setTabs(tabObservaciones, tabDatosComunicacion, tabDatosLocalizacion, tabLlamadas, tabVisitas);

		this.addMember(entidadTs);
		this.addMember(tabSetSecundario);
		rellenaAcciones();
	}

	private Canvas rellenaVisita() {
		VLayout vl = new VLayout(10);
		// vStack.setWidth100();
		// vStack.setHeight100();

		visitasTs = new TablaSimple(null);
		
		tabSetTerciario = new TabSet();
		tabSetTerciario.setVisible(false);
		tabSetTerciario.setTabBarPosition(Side.TOP);
		tabSetTerciario.setMargin(new Integer(10));
		// tabSetSecundario.setWidth("800");
		// tabSetTerciario.setHeight100();
		// tabSetSecundario.setBorder("2px solid green");

		Tab tabProdDemandados = new Tab("Productos demandados");
		tabProdDemandados.setPane(productosDemandadosTs = new TablaSimple(null));

		Tab tabProdOfertados = new Tab("Productos ofertados");
		tabProdOfertados.setPane(productosOfertadosTs = new TablaSimple(null));

		tabSetTerciario.setTabs(tabProdDemandados, tabProdOfertados);

		vl.addMember(visitasTs);
		vl.addMember(tabSetTerciario);
		// vl.setChildren(matriculasTs,tabSetSecundario);
		return vl;
	}

}
